<!DOCTYPE html>
<html class="reftest-wait">
  <head>
    <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
  </head>
  <body onload="doTest()">
    <input type=text style="-moz-appearance: none">
    <script>
      function doTest() {
        function enableCaret(aEnable) {
          var selCon = editor.selectionController;
          selCon.setCaretEnabled(aEnable);
        }

        var d = document.querySelector("input");
        d.value = "a";
        d.focus();
        var editor = SpecialPowers.wrap(d).QueryInterface(SpecialPowers.Ci.nsIDOMNSEditableElement).editor;
        var sel = editor.selection;
        var t = editor.rootElement.firstChild;
        sel.collapse(t, 1); // put the caret at the end of the div
        setTimeout(function() {
          enableCaret(false);enableCaret(true);// force a caret display
          enableCaret(false); // hide the caret
          t.replaceData(0, 1, "b"); // replace the text node data
          // at this point, the selection is collapsed to offset 0
          synthesizeQuerySelectedText(); // call nsCaret::GetGeometry
          sel.collapse(t, 1); // put the caret at the end again
          enableCaret(true); // show the caret again
          document.documentElement.removeAttribute("class");
        }, 0);
      }
    </script>
  </body>
</html>
